package com.example.comsys.service;

import com.example.comsys.model.Result;
import com.example.comsys.model.Wage;
import com.example.comsys.param.WageQueryParam;
import java.util.List;

/**
 * wage service interface def
 *
 * @author wjh
 * @date 2019/12/30, 周一
 */
public interface WageService extends PageQueryService<Wage, WageQueryParam>, ExcelService {

  /**
   * add a wage info
   *
   * @param wage model
   * @return wage
   */
  Wage addWage(Wage wage);

  /**
   * query wage by param
   *
   * @param param wage query param
   * @return {@link Wage} collection
   */
  List<Wage> queryAllWage(WageQueryParam param);

  Integer queryCount(WageQueryParam param);


  /**
   * 更新工资信息
   *
   * @param wage 更新后的工资信息（当前仅更改绩效奖金以及扣除奖金
   * @return 是否更新成功
   */
  boolean updateWageByWageId(Wage wage);

  /**
   * delete a wage record from db
   *
   * @param wageId wage id
   * @return del res
   */
  boolean deleteWage(long wageId);


  /**
   * 重新生成某个部门的工资信息
   *
   * @param sy 开始年份
   * @param sm 开始月份
   * @param ey 结束年份
   * @param em 结束月份
   * @param departId 部门主键
   * @return 重新构建结果
   */
  Result<String> rebuildWageInfo(int sy, int sm, int ey, int em, long departId);

}
